package model

import (
	"ginTea/utils/errmsg"

	"github.com/jinzhu/gorm"
)

type Category struct {
	gorm.Model
	Name     string `gorm:"type:varchar(20) not null" json:"name"`
	UserId   int    `gorm:"not null" json:"user_id"`
	UserInfo User   `gorm:"foreignkey:UserId" json:"user_info"`
}

type SalesInfo struct {
	GoodsTotal int `gorm:"goods_total" json:"goods_total"`
	SalesTotal int `gorm:"sales_total" json:"sales_total"`
}

// 查询分类名是否存在
func CheckCategoryExist(name string) (code int) {
	var data Category
	db.Select("id").Where("name=?", name).First(&data)
	if data.ID > 0 {
		return errmsg.ERROR_CATEGORY_USED //1001
	}
	return errmsg.SUCCESS
}

// 新增分类
func CreateCategory(data *Category) int {
	err := db.Create(&data).Error
	if err != nil {
		return errmsg.ERROR
	}
	return errmsg.SUCCESS
}

// 删除分类
func DeleteCategory(id int) int {
	var data Category
	db.Select("id").Where("id=?", id).First(&data)
	if data.ID > 0 {
		err := db.Unscoped().Where("id = ?", id).Delete(&data).Error
		if err != nil {
			return errmsg.ERROR
		}
		return errmsg.SUCCESS
	}
	return errmsg.ERROR_CATEGORY_NOT_EXIST
}

// 获取分类列表
func GetCategoryList() ([]Category, int) {
	var data []Category
	var total int
	err := db.Preload("UserInfo").Order("id desc").Find(&data).Count(&total).Error
	if err != nil && err != gorm.ErrRecordNotFound {
		return nil, 0
	}
	return data, total
}

// 查询分类下商品总量与总销售量
func GetCateSalesInfo() {

}

// 编辑分类
func UpdateCategory(id int, data *Category) int {
	var user Category
	var maps = make(map[string]interface{})
	maps["name"] = data.Name
	db.Select("id").Where("name=? AND id != ?", data.Name, id).First(&data)
	if data.ID > 0 {
		return errmsg.ERROR_CATEGORY_USED
	} else {
		err = db.Model(&user).Where("id = ?", id).Updates(maps).Error
		if err != nil {
			return errmsg.ERROR
		}
		return errmsg.SUCCESS
	}
}
